home *** CD-ROM | disk | FTP | other *** search
- SLOW SEGMENT PUBLIC PARA
- ASSUME CS:SLOW; DS:SLOW ;ES:SLOW
-
- ORG 100H
-
- START:
- JMP TEMP
-
- EXIT DW 0
- DW 0
- LOOPDATA DW 150
- ACK DB 13,10,10,'VARISLOW by Ray Usher [To slow AT down to play games]',13,10,10
- DB 'Left Shift: Slows down action',13,10,10
- DB 'Right Shift: Speeds up action',13,10,10
- DB 'Left Shift & Right Shift together: Exits program',13,10,'$'
- EXITMES DB 'Computer is back to full speed',13,10
-
- START2:
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
- PUSH DS
- MOV AX,40H ;GET KEYBOARD BYTE
- MOV DS,AX
- MOV BX,17H
- MOV DL,[BX]
- MOV DH,DL ;SAVE IT IN DH
- MOV AX,CS ;SET UP DS
- MOV DS,AX
- AND DL,1 ;CK FOR R SHIFT
- JZ CK_L_SHIFT
- MOV DL,DH ;CK FOR BOTH SHIFTS
- AND DL,2
- JNZ CANCEL ;YES GO
- MOV AX,LOOPDATA ;SHORTEN LOOP FOR FASTER
- SUB AX,10
- CMP AX,10
- JB LOOP
- MOV LOOPDATA,AX
- JMP LOOP
- CK_L_SHIFT:
- MOV DL,DH ;CH FOR L SHIFT
- AND DL,02
- JZ LOOP
- MOV AX,LOOPDATA ;LENGTHEN LOOP FOR SLOWER COMPUTER
- ADD AX,10
- CMP AX,300
- JA LOOP
- MOV LOOPDATA,AX ;GET LOOP LENGTH
- LOOP:
- MOV CX,LOOPDATA
- LOOP1:
- PUSH CX
- MOV CX,100
- HERE:
- LOOP HERE
- POP CX
- LOOP LOOP1
- POP DS
- POP DX
- POP CX
- POP BX
- POP AX
- JMP DWORD PTR EXIT
- CANCEL:
- CLI
- MOV DX,EXIT ;RETURN OLD HOOK
- MOV DS,EXIT+2
- MOV AX,251CH
- INT 21H
- STI
- PUSH SI
- XOR SI,SI ;DISPLAY EXIT MESSAGE
- LOOP2:
- MOV AL,EXITMES [SI]
- MOV AH,14
- XOR BH,BH
- INT 16 ;USING INT 16 (A MUST)
- INC SI
- CMP SI,32
- JB LOOP2
- POP SI
- POP DS
- POP DX
- POP CX
- POP BX
- POP AX
- IRET
-
- END_OF_PROG EQU THIS BYTE
-
- TEMP:
- MOV DX, OFFSET ACK ;DISPLAY INSTRUCTIONS
- MOV AH,9H
- INT 21H
- CLI
- MOV AX,351CH ;GET 1C HOOK
- INT 21H
- MOV EXIT,BX
- MOV AX,ES
- MOV EXIT+2,AX
- MOV AX,CS
- MOV DS,AX
- MOV DX,OFFSET START2 ;CHANGE 1C HOOK TO HERE
- MOV AX,251CH
- INT 21H
- STI
- MOV DX,OFFSET END_OF_PROG
- INT 27H ;TERMINATE AND STAY RESIDENT
- SLOW ENDS
- END START